<?php
###汉字转拼音类
	
class Pinyin{
    private $darray = array( 
			array("a",-20319), 
			array("ai",-20317), 
			array("an",-20304), 
			array("ang",-20295), 
			array("ao",-20292), 
			array("ba",-20283), 
			array("bai",-20265), 
			array("ban",-20257), 
			array("bang",-20242), 
			array("bao",-20230), 
			array("bei",-20051), 
			array("ben",-20036), 
			array("beng",-20032), 
			array("bi",-20026), 
			array("bian",-20002), 
			array("biao",-19990), 
			array("bie",-19986), 
			array("bin",-19982), 
			array("bing",-19976), 
			array("bo",-19805), 
			array("bu",-19784), 
			array("ca",-19775), 
			array("cai",-19774), 
			array("can",-19763), 
			array("cang",-19756), 
			array("cao",-19751), 
			array("ce",-19746), 
			array("ceng",-19741), 
			array("cha",-19739), 
			array("chai",-19728), 
			array("chan",-19725), 
			array("chang",-19715), 
			array("chao",-19540), 
			array("che",-19531), 
			array("chen",-19525), 
			array("cheng",-19515), 
			array("chi",-19500), 
			array("chong",-19484), 
			array("chou",-19479), 
			array("chu",-19467), 
			array("chuai",-19289), 
			array("chuan",-19288), 
			array("chuang",-19281), 
			array("chui",-19275), 
			array("chun",-19270), 
			array("chuo",-19263), 
			array("ci",-19261), 
			array("cong",-19249), 
			array("cou",-19243), 
			array("cu",-19242), 
			array("cuan",-19238), 
			array("cui",-19235), 
			array("cun",-19227), 
			array("cuo",-19224), 
			array("da",-19218), 
			array("dai",-19212), 
			array("dan",-19038), 
			array("dang",-19023), 
			array("dao",-19018), 
			array("de",-19006), 
			array("deng",-19003), 
			array("di",-18996), 
			array("dian",-18977), 
			array("diao",-18961), 
			array("die",-18952), 
			array("ding",-18783), 
			array("diu",-18774), 
			array("dong",-18773), 
			array("dou",-18763), 
			array("du",-18756), 
			array("duan",-18741), 
			array("dui",-18735), 
			array("dun",-18731), 
			array("duo",-18722), 
			array("e",-18710), 
			array("en",-18697), 
			array("er",-18696), 
			array("fa",-18526), 
			array("fan",-18518), 
			array("fang",-18501), 
			array("fei",-18490), 
			array("fen",-18478), 
			array("feng",-18463), 
			array("fo",-18448), 
			array("fou",-18447), 
			array("fu",-18446), 
			array("ga",-18239), 
			array("gai",-18237), 
			array("gan",-18231), 
			array("gang",-18220), 
			array("gao",-18211), 
			array("ge",-18201), 
			array("gei",-18184), 
			array("gen",-18183), 
			array("geng",-18181), 
			array("gong",-18012), 
			array("gou",-17997), 
			array("gu",-17988), 
			array("gua",-17970), 
			array("guai",-17964), 
			array("guan",-17961), 
			array("guang",-17950), 
			array("gui",-17947), 
			array("gun",-17931), 
			array("guo",-17928), 
			array("ha",-17922), 
			array("hai",-17759), 
			array("han",-17752), 
			array("hang",-17733), 
			array("hao",-17730), 
			array("he",-17721), 
			array("hei",-17703), 
			array("hen",-17701), 
			array("heng",-17697), 
			array("hong",-17692), 
			array("hou",-17683), 
			array("hu",-17676), 
			array("hua",-17496), 
			array("huai",-17487), 
			array("huan",-17482), 
			array("huang",-17468), 
			array("hui",-17454), 
			array("hun",-17433), 
			array("huo",-17427), 
			array("ji",-17417), 
			array("jia",-17202), 
			array("jian",-17185), 
			array("jiang",-16983), 
			array("jiao",-16970), 
			array("jie",-16942), 
			array("jin",-16915), 
			array("jing",-16733), 
			array("jiong",-16708), 
			array("jiu",-16706), 
			array("ju",-16689), 
			array("juan",-16664), 
			array("jue",-16657), 
			array("jun",-16647), 
			array("ka",-16474), 
			array("kai",-16470), 
			array("kan",-16465), 
			array("kang",-16459), 
			array("kao",-16452), 
			array("ke",-16448), 
			array("ken",-16433), 
			array("keng",-16429), 
			array("kong",-16427), 
			array("kou",-16423), 
			array("ku",-16419), 
			array("kua",-16412), 
			array("kuai",-16407), 
			array("kuan",-16403), 
			array("kuang",-16401), 
			array("kui",-16393), 
			array("kun",-16220), 
			array("kuo",-16216), 
			array("la",-16212), 
			array("lai",-16205), 
			array("lan",-16202), 
			array("lang",-16187), 
			array("lao",-16180), 
			array("le",-16171), 
			array("lei",-16169), 
			array("leng",-16158), 
			array("li",-16155), 
			array("lia",-15959), 
			array("lian",-15958), 
			array("liang",-15944), 
			array("liao",-15933), 
			array("lie",-15920), 
			array("lin",-15915), 
			array("ling",-15903), 
			array("liu",-15889), 
			array("long",-15878), 
			array("lou",-15707), 
			array("lu",-15701), 
			array("lv",-15681), 
			array("luan",-15667), 
			array("lue",-15661), 
			array("lun",-15659), 
			array("luo",-15652), 
			array("ma",-15640), 
			array("mai",-15631), 
			array("man",-15625), 
			array("mang",-15454), 
			array("mao",-15448), 
			array("me",-15436), 
			array("mei",-15435), 
			array("men",-15419), 
			array("meng",-15416), 
			array("mi",-15408), 
			array("mian",-15394), 
			array("miao",-15385), 
			array("mie",-15377), 
			array("min",-15375), 
			array("ming",-15369), 
			array("miu",-15363), 
			array("mo",-15362), 
			array("mou",-15183), 
			array("mu",-15180), 
			array("na",-15165), 
			array("nai",-15158), 
			array("nan",-15153), 
			array("nang",-15150), 
			array("nao",-15149), 
			array("ne",-15144), 
			array("nei",-15143), 
			array("nen",-15141), 
			array("neng",-15140), 
			array("ni",-15139), 
			array("nian",-15128), 
			array("niang",-15121), 
			array("niao",-15119), 
			array("nie",-15117), 
			array("nin",-15110), 
			array("ning",-15109), 
			array("niu",-14941), 
			array("nong",-14937), 
			array("nu",-14933), 
			array("nv",-14930), 
			array("nuan",-14929), 
			array("nue",-14928), 
			array("nuo",-14926), 
			array("o",-14922), 
			array("ou",-14921), 
			array("pa",-14914), 
			array("pai",-14908), 
			array("pan",-14902), 
			array("pang",-14894), 
			array("pao",-14889), 
			array("pei",-14882), 
			array("pen",-14873), 
			array("peng",-14871), 
			array("pi",-14857), 
			array("pian",-14678), 
			array("piao",-14674), 
			array("pie",-14670), 
			array("pin",-14668), 
			array("ping",-14663), 
			array("po",-14654), 
			array("pu",-14645), 
			array("qi",-14630), 
			array("qia",-14594), 
			array("qian",-14429), 
			array("qiang",-14407), 
			array("qiao",-14399), 
			array("qie",-14384), 
			array("qin",-14379), 
			array("qing",-14368), 
			array("qiong",-14355), 
			array("qiu",-14353), 
			array("qu",-14345), 
			array("quan",-14170), 
			array("que",-14159), 
			array("qun",-14151), 
			array("ran",-14149), 
			array("rang",-14145), 
			array("rao",-14140), 
			array("re",-14137), 
			array("ren",-14135), 
			array("reng",-14125), 
			array("ri",-14123), 
			array("rong",-14122), 
			array("rou",-14112), 
			array("ru",-14109), 
			array("ruan",-14099), 
			array("rui",-14097), 
			array("run",-14094), 
			array("ruo",-14092), 
			array("sa",-14090), 
			array("sai",-14087), 
			array("san",-14083), 
			array("sang",-13917), 
			array("sao",-13914), 
			array("se",-13910), 
			array("sen",-13907), 
			array("seng",-13906), 
			array("sha",-13905), 
			array("shai",-13896), 
			array("shan",-13894), 
			array("shang",-13878), 
			array("shao",-13870), 
			array("she",-13859), 
			array("shen",-13847), 
			array("sheng",-13831), 
			array("shi",-13658), 
			array("shou",-13611), 
			array("shu",-13601), 
			array("shua",-13406), 
			array("shuai",-13404), 
			array("shuan",-13400), 
			array("shuang",-13398), 
			array("shui",-13395), 
			array("shun",-13391), 
			array("shuo",-13387), 
			array("si",-13383), 
			array("song",-13367), 
			array("sou",-13359), 
			array("su",-13356), 
			array("suan",-13343), 
			array("sui",-13340), 
			array("sun",-13329), 
			array("suo",-13326), 
			array("ta",-13318), 
			array("tai",-13147), 
			array("tan",-13138), 
			array("tang",-13120), 
			array("tao",-13107), 
			array("te",-13096), 
			array("teng",-13095), 
			array("ti",-13091), 
			array("tian",-13076), 
			array("tiao",-13068), 
			array("tie",-13063), 
			array("ting",-13060), 
			array("tong",-12888), 
			array("tou",-12875), 
			array("tu",-12871), 
			array("tuan",-12860), 
			array("tui",-12858), 
			array("tun",-12852), 
			array("tuo",-12849), 
			array("wa",-12838), 
			array("wai",-12831), 
			array("wan",-12829), 
			array("wang",-12812), 
			array("wei",-12802), 
			array("wen",-12607), 
			array("weng",-12597), 
			array("wo",-12594), 
			array("wu",-12585), 
			array("xi",-12556), 
			array("xia",-12359), 
			array("xian",-12346), 
			array("xiang",-12320), 
			array("xiao",-12300), 
			array("xie",-12120), 
			array("xin",-12099), 
			array("xing",-12089), 
			array("xiong",-12074), 
			array("xiu",-12067), 
			array("xu",-12058), 
			array("xuan",-12039), 
			array("xue",-11867), 
			array("xun",-11861), 
			array("ya",-11847), 
			array("yan",-11831), 
			array("yang",-11798), 
			array("yao",-11781), 
			array("ye",-11604), 
			array("yi",-11589), 
			array("yin",-11536), 
			array("ying",-11358), 
			array("yo",-11340), 
			array("yong",-11339), 
			array("you",-11324), 
			array("yu",-11303), 
			array("yuan",-11097), 
			array("yue",-11077), 
			array("yun",-11067), 
			array("za",-11055), 
			array("zai",-11052), 
			array("zan",-11045), 
			array("zang",-11041), 
			array("zao",-11038), 
			array("ze",-11024), 
			array("zei",-11020), 
			array("zen",-11019), 
			array("zeng",-11018), 
			array("zha",-11014), 
			array("zhai",-10838), 
			array("zhan",-10832), 
			array("zhang",-10815), 
			array("zhao",-10800), 
			array("zhe",-10790), 
			array("zhen",-10780), 
			array("zheng",-10764), 
			array("zhi",-10587), 
			array("zhong",-10544), 
			array("zhou",-10533), 
			array("zhu",-10519), 
			array("zhua",-10331), 
			array("zhuai",-10329), 
			array("zhuan",-10328), 
			array("zhuang",-10322), 
			array("zhui",-10315), 
			array("zhun",-10309), 
			array("zhuo",-10307), 
			array("zi",-10296), 
			array("zong",-10281), 
			array("zou",-10274), 
			array("zu",-10270), 
			array("zuan",-10262), 
			array("zui",-10260), 
			array("zun",-10256), 
			array("zuo",-10254) 
		); 
		
    private function g($num){ 
		$d = $this->darray; 
		if($num>0&&$num<160){ 
			return chr($num); 
		}elseif($num<-20319||$num>-10247){ 
			return ""; 
		}else{ 
			for($i=count($d)-1;$i>=0;$i--){if($d[$i][1]<=$num)break;} 
				return $d[$i][0]; 
			} 
	} 

    public function c($str){
        $this->is_utf8($str) && $str = iconv('utf-8','gb2312',$str);
		$ret=""; 
		for($i=0;$i<strlen($str);$i++){ 
			$p=ord(substr($str,$i,1)); 
			if($p>160){ 
				$q=ord(substr($str,++$i,1)); 
				$p=$p*256+$q-65536; 
			} 
			$ret.= $this->g($p); 
		} 
		return $ret; 
	}
	
	private static function is_utf8($string) {
        return preg_match('%^(?:
        [\x09\x0A\x0D\x20-\x7E] # ASCII
        | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
        | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
        | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
        | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
        | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
        | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
        )*$%xs', $string);
    }

}


?>